package com.donnees.mysql;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import javax.swing.JOptionPane;

import com.donnees.dao.AbstractDAO;
import com.donnees.dao.DAOFactory;

/**
 * @name MySqlDAOFactory
 * @description Fabrique de DAO MySQL.
 * 				Permet de créer tous les DAO utilisant le SGBD MySQL.
 * @method static - getConnection - Créée une nouvelle connection à la la BDD et la retourne.
 * @author Ambroise
 * @since 07/03/2012
 *
 */

public class MySqlDAOFactory extends DAOFactory {

	private static final String URL = "jdbc:mysql://localhost:3306/projet_java";
	private static final String LOGIN = "user";
	private static final String PASSWORD = "javadb";
	
	/**
	 * @name getConnection
	 * @description Créée une nouvelle connection à la la BDD et la retourne.
	 * 				Si une erreur survient, averti du type d'erreur rencontré.
	 * @return Connection
	 */
	public static Connection getConnection(){
		Connection oConnection = null;
		
		try{
			oConnection = DriverManager.getConnection(MySqlDAOFactory.URL, MySqlDAOFactory.LOGIN, MySqlDAOFactory.PASSWORD);
		}catch (SQLException e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "<html><body><u>Une erreur est survenue lors d'une tentative de connexion à la base de données:</u></body></html>\n\n" + e.getMessage(), "Erreur lors de la connexion à la BDD ! ", JOptionPane.ERROR_MESSAGE);
		}
		return oConnection;
	}
	

	
	/*
	 * Les méthodes ci-dessous retournent l'objet demandé. Ce sont les méthodes de la fabrique.
	 */

	@Override
	public AbstractDAO<?> getCarteDAO() {
		return new CarteMysqlDAO();
	}

	@Override
	public AbstractDAO<?> getFamilleTypesDAO() {
		return new FamilleTypesMysqlDAO();
	}

	@Override
	public AbstractDAO<?> getHistoriqueDAO() {
		return new HistoriqueMysqlDAO();
	}

	@Override
	public AbstractDAO<?> getImageDAO() {
		return new ImageMysqlDAO();
	}

	@Override
	public AbstractDAO<?> getParcours_PoiDAO() {
		return new Parcours_PoiMysqlDAO();
	}

	@Override
	public AbstractDAO<?> getParcoursDAO() {
		return new ParcoursMysqlDAO();
	}

	@Override
	public AbstractDAO<?> getPoi_TypesDAO() {
		return new Poi_TypesMysqlDAO();
	}

	@Override
	public AbstractDAO<?> getPoiDAO() {
		return new PoiMysqlDAO();
	}

	@Override
	public AbstractDAO<?> getTypesDAO() {
		return new TypesMysqlDAO();
	}
	
	
}
